Vega-Lite文档: 01_view
视图规范View
single view
layer
facet
concat
repeat
属性
所有的ViewSpec
都支持以下属性:
属性 | 类型 | 描述 |
---|---|---|
name | String | 图的名字 |
description | String | 描述信息, 注释 |
title | Text|TitleParams | 图的标题 |
data | Data|Null | 必需项, 如果不提供数据, 则从上级表继承 |
transform | Transform[] | 数据转换规则列表 |
params | TopLevelParameter[] | 映射用户输入和Data的参数列表 |
此外, layer, facet, concat, repeat
等还支持resolve
属性:
属性 | 类型 | 描述 |
---|---|---|
resolve | Resolve | 设置Scale, axis, legend分辨率 |
facet, concat, repeat
等支持的属性:
属性 | 类型 | 描述 |
---|---|---|
align | String/Object | 按行/列对齐grid, 支持的参数为all, each, none : none => flow layout; each => 可自定义每个subview的大小; all => (默认值) 每个subview大小都一样;也可以 }{"row": string, "column": string} 的形式自定义行列的对齐规则. (这个属性类似于ggplot中facet里的scale: free freex, freey) |
bounds | String | 限制子图大小, 可选参数full, flush . |
center | Boolean/Object | 子图是否居中, 也可以用{"row": boolean, "column": boolean} 的形式指定行/列是否居中 |
spacing | Number/Object | 子图间距大小(像素). 也可用{"row": number, "column": number} 的形形式独立设定行/列, 默认情况下, 直接继承view composition设置中的值(默认是20) |
最顶层的视窗(Top-level specifications)还支持以下属性:
属性 | 类型 | 描述 |
---|---|---|
$schema | String | 设置Vega-Lite的纲要, 一般不会改这个属性, 直接用https://vega.github.io/schema/vega-lite/v5.json |
background | Color/ExprRef | CSS颜色属性, 配置背景色, 默认: "white" |
padding | Number/Object/ExprRef | 默认图的padding(像素), 类似CSS的规则, 如果是一个数字, 则应用四边, 如果是json对象,则应该遵循以下格式{"left":5, "top":5, "right":5, "bottom":5} , 默认值5 |
autosize | String/AutoSizeParams | 设置如何决定图的大小, 可选参数pad, fit, none . 默认是pad |
config | Config | Vega-Lite的配置参数 |
unsermeta | Object | metadata, 不知道干啥用的 |
单视图
一个基本单视图大概包含如下属性:
除非显式设置, Vega-Lite自动生成
axes,legends,scales
等信息;支持很多数据转换操作, 后边会细讲;
单视图支持以下属性:
属性 | 类型 | 描述 |
---|---|---|
mark | Mark | 必需项. 指定图表类型, 可选bar, circle, square, tick, line, area, point, rule, geoshape, text , 也可以指定一个对象, 详细控制mark的属性细节。 |
encoding | Encoding | 作图元素和属性的键值对映射 |
width | Number/String/Object | 图的宽度: 1. 如果x轴是连续值, width应该是一个数值; 2. 如果x轴是离散值或没有x轴, width可以是数值, 也可以是一个 {step:number} 对象, 用以定义每个离散元素的宽度3. 设置成 container , 让width可以响应式变动. |
height | Number/String/Object | 类似于width, 作用于y轴 |
view | ViewBackground | 定义view背景的对象, 默认是none(透明) |
projection | Projection | 图像的投射, 如果是mark是geoshape , 会应用shape 路径, 如果是其他marks, 会投射到latitude 和longitude |
背景
background
属性设置整个图的背景色, view
中的一堆属性设置作图区的边框和背景:
属性 | 类型 | 描述 |
---|---|---|
style | String/String[] | 应用预设主题 |
cornerRadius | Number/ExprRef | 圆角矩形或弧线的弧度(像素) |
cursor | String | 鼠标指针属性, 参考CSS cursor type |
fill | Color/Null/ExprRef | 填充色 |
fillOpacity | Number/ExprRef | 填充透明度[0,1] |
opacity | Number/ExprRef | 整体透明度[0,1] |
stroke | Color/Null/ExprRef | 笔画颜色, 默认: "#ddd" |
strokeCap | String/ExprRef | 画笔末端属性: butt, round, square , 三者差别可参考这里 |
strokeDash | Number/ExprRef | 数组, 表示虚线 |
strokeDashOffset | Number/ExprRef | 虚线偏移量(像素) |
strokeJoin | String/ExprRef | 画笔拼接方法, miter, round, bevel , 三种的差别可参考这里 |
strokeMiterLimit | Number/ExprRef | miter方法中, 配置join的倾斜等级 |
StrokeOpacity | Number/ExprRef | 画笔透明度[0,1] |
strokeWidth | Number/ExprRef | 画笔宽度,像素 |
示例图:
|
视图配置项
也可以通过在config
对象中指定view
的属性, 来更改样式. config
中view
的配置项除了支持所有背景中的属性外, 还提供如下属性:
属性 | 类型 | 描述 |
---|---|---|
continuousWidth | Number | 连续变量的X轴的默认宽度 |
continuousHeight | Number | 连续变量的Y轴的默认高度 |
discreteWidth | Number/Object | 离散变量的X轴的默认宽度, 可以是数字, 也可以是{step:number} 对象 |
discreteHeight | Number/Object | 离散变量的Y轴的默认宽度, 可以是数字, 也可以是{step:number} 对象 |
step | Number | 离散X/Y的默认step size |
举个栗子:
|
标题title
title
给图表添加一个标题, tilte
有如下可选属性:
属性 | 类型 | 描述 |
---|---|---|
text | Text/ExprRef | 必需, 文本 |
align | String | 对齐, left, center, right |
anchor | Null/String | 标题的锚点, start, middle, end , 默认是middle |
angle | Number/ExprRef | 角度 |
baseline | String | 基准线, alphabetic, top, middle, bottom, line-top, line-botton , 默认是alphabetic |
color | Null/Color/ExprRef | 标题的文字颜色 |
dx | Number/ExprRef | Delta按列取子集 |
dy | Number/ExprRef | Delta按行取子集 |
font | String/ExprRef | 字体 |
fontSize | Number/ExprRef | 大小 |
fontStyle | String/ExprRef | 文本类型 |
... | ... | ... |
宽/高
Single View
和layer
有width
和height
属性, 用来设置作图区域的宽高, 如果想设置图的整体大小, 可以用autosize
属性。
如果顶层的宽高没设置,
Single View
的宽高由config
决定;默认宽是200(连续)或20(离散)
用数值固定宽高:
|
container
指示宽高由上游容器制定, 如果此时上游的容器(比如一个<div>
)没有设置宽高, 则还是用config
中的默认值对于多分组的离散变量, 宽高的step
设置自动应用于最细分的每个分组: 如下例子中, step设置每个bar的宽度是10px:
|
如果想对每个大分组(上图x轴中A, B, C
)设置宽高, 添加"for": "position"
即可, 比如下图中设置三个分组的总宽为40px:
|
autosize
自适应宽高
autosize
支持如下属性:
属性 | 类型 | 描述 |
---|---|---|
type | String | 可选pad, fit, fit-x, fit-y, none |
resize | Boolean | 是否每次更新图形后重新计算autosize, 默认false |
contains | String | 如何计算size,可选content, padding .content (默认)=>先计算宽高再加padding信息;padding => 把padding信息也加到宽高设置中 |
autosize的type参数介绍:
none
: 不自动设置大小pad
: 默认值, 自动设置大小使得所有作图区域可以全部展示, 所以最终成图很可能会超过设置的宽高一些fit
: 强制要求整个作图区域缩放适配到设置的宽高值, 如果图之外的附属信息, 比如刻度, 坐标, 图注等占幅特别大的话, 设置这个可能会导致真正作图区域变得很小。fit-x
和fit-y
: 对单个维度应用fit
示例:
|
多图中的宽高
生成分面多图时, 可以设置每个子图的宽高, 从而设置多图宽高:
{
"data": {"url": "data/movies.json"},
"facet": {"column": {"field": "MPAA Rating"}},
"spec": {
"width": 75,
"height": 75,
"mark": "point",
"encoding": {
"x": {"field": "Worldwide Gross", "type": "quantitative"},
"y": {"field": "US DVD Sales", "type": "quantitative"}
}
}
}
用column
和row
生成多图, 也是一样的逻辑。以下代码会产生跟上图一样的图:
{
"width": 75,
"height": 75,
"data": {"url": "data/movies.json"},
"mark": "point",
"encoding": {
"column": {"field": "MPAA Rating"}, // <-- 用column分面
"x": {"field": "Worldwide Gross", "type": "quantitative"},
"y": {"field": "US DVD Sales", "type": "quantitative"}
}
}